package com.demo.java.OD651_700.OD661;

import java.util.Scanner;
import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【幻方修复(A卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/147044027
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();  // 读取矩阵的维度N

        // 初始化数组，用来存储每一行和每一列的和
        int[] line_sum = new int[n];
        int[] col_sum = new int[n];
        int[][] matrix = new int[n][n];  // 存储矩阵

        // 读取矩阵的数据，并计算每行和每列的和
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                matrix[i][j] = in.nextInt();  // 读取每个矩阵元素
                line_sum[i] += matrix[i][j];  // 更新行和
                col_sum[j] += matrix[i][j];  // 更新列和
            }
        }

        // 计算目标和（魔方阵的标准和）
        int target = n * (n * n + 1) / 2;

        // 存储不满足条件的行和列
        List<Integer> lines = new ArrayList<Integer>();
        List<Integer> cols = new ArrayList<Integer>();

        // 检查每一行和每一列，找出不符合目标和的行和列
        for (int i = 0; i < n; i++) {
            if (line_sum[i] != target) {
                lines.add(i);  // 添加不符合目标和的行
            }
            if (col_sum[i] != target) {
                cols.add(i);  // 添加不符合目标和的列
            }
        }

        // 如果有两个不满足条件的行
        if (lines.size() == 2) {
            // 尝试交换两行中的某些元素，使得和相等
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    // 判断是否可以交换元素使得目标和匹配
                    if (line_sum[lines.get(0)] - matrix[lines.get(0)][i] + matrix[lines.get(1)][j] == target) {
                        System.out.println((lines.get(0) + 1) + " " + (i + 1) + " " + matrix[lines.get(1)][j]);
                        System.out.println((lines.get(1) + 1) + " " + (j + 1) + " " + matrix[lines.get(0)][i]);
                        return;
                    }
                }
            }
        } else if (cols.size() == 2) {
            // 如果有两个不满足条件的列
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    // 判断是否可以交换元素使得目标和匹配
                    if (col_sum[cols.get(0)] - matrix[i][cols.get(0)] + matrix[j][cols.get(1)] == target) {
                        System.out.println((i + 1) + " " + (cols.get(0) + 1) + " " + matrix[j][cols.get(1)]);
                        System.out.println((j + 1) + " " + (cols.get(1) + 1) + " " + matrix[i][cols.get(0)]);
                        return;
                    }
                }
            }
        }
    }
}